1. Field of the Invention
The present invention relates to telecommunications networks, and particularly to computer networks. More specifically, the present invention relates to computer networks which operate according to transfer protocols that rely on acknowledgment of correct data transmission.
2. Description of the Related Art
In the last years the use of telecommunication networks for interconnecting computers—from Local Area Networks (LAN) to the Internet, passing through Wide Area Networks (WAN)—has constantly raised, both for working and entertaining purposes. At the same time, software applications exploiting telecommunication networks have grown in number and functionality provided, along with number and dimensions of contents made available through the telecommunication networks. Hence, the flows of data continuously transferred through the network components (e.g. network backbones, gateways and the like) have greatly increased to the point that solutions for controlling the network data traffic have become necessary in order to avoid a congestion of the network.
For the purpose of the present invention, with the term “software application” it is intended a computer software designed to help users to perform specific tasks, said computer software being able to interact directly with both the user and the application layer, such as the Open System Interconnection (OSI) application layer. Software applications designed to run on data processing terminals like Personal Computers (PC), smart phones and the like may for convenience be distinguished based on their degree of interaction with the user when they run on the user's data processing terminal. There are software applications that, when running, require a relatively low interaction with the user, operate in an almost completely automatic way, may have a relatively low Quality of Service (QoS), and can tolerate losses of data packets; this is for example the case of Peer-to-Peer (P2P) applications, allowing for a direct data exchange between user terminals. Other software applications, like for example applications for Web browsing, for the fruition of audio and/or video contents distributed in streaming, for VoIP (Voice over IP), exhibit by their own nature a relatively high degree of interactivity with the user (that is the user plays an active role while browsing the Web, and it is presumed that his/her attention is focused on the audio/video content he/she is enjoying). For these applications, a high QoS need to be ensured. Hereinafter, for the sake of conciseness, software applications of the first class defined above will be also referred to as “background software applications”, whereas software applications of the second class will be also referred to as “foreground software applications”.
Nowadays, the diffusion of P2P applications has become so pervasive that P2P data traffic represents a relevant portion of the total telecommunication network data traffic. P2P data traffic by its own nature tries to constantly occupy as much transmission band as possible, in order to speed up the data exchange. This may cause a congestion of the network, which, as a reaction, may casually drop some data packets (also referred to as “datagrams”). The dropped data packets need to be retransmitted, and this slows down the respective data flows. This is particularly penalizing for foreground software applications, usually operating in parallel with P2P applications (it is easy to imagine how annoying it is for a user when a VoIP call suffers of high latency, or an audio/video stream suffers of repeated blockages).
In order to overcome network congestion problems, network apparatuses implementing complex analysis mechanisms for classifying data traffic associated with background software applications (such as P2P applications) have been proposed.
U.S. Pat. No. 6,950,393 discloses a packet transfer apparatus for a network system. The apparatus comprises a packet receiver that accepts an input of packets from a first network segment, a packet classifier that classifies packets based on their respective process flows, a packet discarder to discard packets and a packet sender that sends packets to a second network segment.
International application No. WO 2000/21233 discloses a link layer entity receiving data packets from a source and forwarding the data packets to a forward data link, said link layer entity storing the received data packets in a data packet buffer until the data packets depart the link layer entity and they are forwarded to the forward link. There is also disclosed an acknowledgement pacing device, coupled to the link layer entity, for pacing acknowledgement packets to be sent to the source in response to receiving the data packets from the source. The acknowledgement pacing device includes: an acknowledgement control unit for monitoring congestion at the link layer entity and generating a control signal for controlling the processing of acknowledgement packets based upon whether congestion is occurring at the link layer entity; an acknowledgement packet buffer, coupled to the acknowledgement control unit, for storing acknowledgement packets received from the acknowledgement control unit and a scheduler, coupled to the acknowledgement control unit and the acknowledgement buffer, said scheduler releasing acknowledgement packets to the source based upon the control signal generated by the acknowledgement control unit.
U.S. patent application No. 2005/0190694 discloses a data packet classifier to classify a plurality of N-bit input tuples, said classifier comprising a hash address generator, a memory and a comparison unit. The hash address generator generates a plurality of M-bit hash addresses from said plurality of N-bit input tuples, wherein M is significantly smaller than N. The memory has a plurality of memory entries and is addressable by said plurality of M-bit hash addresses, each of such addresses corresponding to a plurality of memory entries, each of said plurality of memory entries being capable of storing one of said plurality of N-bit tuples and an associated process flow information. The comparison unit determines if an incoming N-bit tuple can be matched with a stored N-bit tuple. The associated process flow information is output if a match is found, whereas a new entry is created in the memory for the incoming N-bit tuple if a match is not found.